
DescrSetLayouts {
  [0]
    name   = 'DbgDS_Trace_Cs'
    usage  = 0
    stages = Compute
    [0] StorageBuffer {
      name         = 'dbg_ShaderTrace'
      vkIndex      = 0
      mtlIndex     = Compute: 0
      state        = ShaderStorage_RW | ComputeShader
      staticSize   = 16 b
      arrayStride  = 4 b
      typeName     = d8991b22
    }
  ----------------------
  [1]
    name   = 'DS_Material'
    usage  = UpdateTemplate | ArgumentBuffer
    stages = Fragment
    [0] SampledImage {
      name         = 'un_ColorTexture'
      vkIndex      = 0
      mtlIndex     = 0
      state        = ShaderSample | FragmentShader
      type         = FImage2D
      format       = Unknown
    }
    [1] ImmutableSampler {
      name         = 'un_ColorTexture_sampler'
      vkIndex      = 1
      sampler      = { 'LinearRepeat' }
    }
  ----------------------
  [2]
    name   = 'DS_PerDraw2D'
    usage  = UpdateTemplate | ArgumentBuffer
    stages = Vertex
    [0] UniformBuffer {
      name         = 'drawUB'
      vkIndex      = 0
      mtlIndex     = 0
      state        = ShaderUniform | VertexProcessingShaders
      staticSize   = 64 b
      arrayStride  = 0 b
      typeName     = UBlock
    }
  ----------------------
  [3]
    name   = 'DS_Compute'
    usage  = 0
    stages = Compute
    [0] StorageImage {
      name         = 'un_OutImage'
      vkIndex      = 0
      mtlIndex     = Compute: 0
      state        = ShaderStorage_Write | ComputeShader
      type         = UNImage2D
      format       = RGBA8_UNorm
    }
  ----------------------
  [4]
    name   = 'DS_RayTracing'
    usage  = 0
    stages = RayGen
    [0] StorageImage {
      name         = 'un_OutImage'
      vkIndex      = 0
      state        = ShaderStorage_Write | RayTracingShaders
      type         = UNImage2D
      format       = RGBA8_UNorm
    }
    [1] RayTracingScene {
      name         = 'un_TLAS'
      vkIndex      = 1
    }
  ----------------------
  [5]
    name   = 'DS_Compute_2'
    usage  = 0
    stages = Compute
    [0] StorageImage {
      name         = 'un_Image'
      vkIndex      = 0
      mtlIndex     = Compute: 0
      state        = ShaderStorage_RW | ComputeShader
      type         = UImage2D
      format       = R32U
    }
  ----------------------
  [6]
    name   = 'DS_Compute_3'
    usage  = 0
    stages = Compute
    [0] UniformBuffer {
      name         = 'bufferRef'
      vkIndex      = 0
      mtlIndex     = Compute: 0
      state        = ShaderUniform | ComputeShader
      staticSize   = 32 b
      arrayStride  = 0 b
      typeName     = BufferRef
    }
  ----------------------
}

PipelineLayouts {
  [0]
    [0] DescrSet {
      name     = 'DS_Compute'
      uid      = 3
      vkIndex  = 0
    }
  ----------------------
  [1]
    [0] DescrSet {
      name     = 'DS_Material'
      uid      = 1
      vkIndex  = 1
    }
    [1] DescrSet {
      name     = 'DS_PerDraw2D'
      uid      = 2
      vkIndex  = 2
    }
  ----------------------
  [2]
    [0] DescrSet {
      name     = 'DS_Compute_2'
      uid      = 5
      vkIndex  = 0
    }
  ----------------------
  [3]
    [0] DescrSet {
      name     = 'DS_Material'
      uid      = 1
      vkIndex  = 1
    }
  ----------------------
  [4]
    [0] DescrSet {
      name     = 'DS_Material'
      uid      = 1
      vkIndex  = 1
    }
    [1] DescrSet {
      name     = 'DS_PerDraw3D'
      uid      = 2
      vkIndex  = 2
    }
  ----------------------
  [5]
    [0] DescrSet {
      name     = 'DS_Compute_3'
      uid      = 6
      vkIndex  = 0
    }
  ----------------------
  [6]
    [0] DescrSet {
      name     = 'DS_Material'
      uid      = 1
      vkIndex  = 0
    }
    [0] PushConst {
      name     = 'pc1'
      typename = 'PushConst1'
      stage    = Vertex
      bufferId = 0
      offset   = 0 b
      size     = 16 b
    }
    [1] PushConst {
      name     = 'pc2'
      typename = 'PushConst2'
      stage    = Fragment
      bufferId = 0
      offset   = 16 b
      size     = 16 b
    }
  ----------------------
  [7]
    [0] DescrSet {
      name     = 'DS_Compute'
      uid      = 3
      vkIndex  = 0
    }
    [1] DescrSet {
      name     = 'ShaderTrace'
      uid      = 0
      vkIndex  = 1
    }
  ----------------------
  [8]
    [0] DescrSet {
      name     = 'DS_RayTracing'
      uid      = 4
      vkIndex  = 0
    }
  ----------------------
}

RenderStates {
  [0]
    renderState = {
      depth = {
        compareOp = LEqual
        write     = true
        test      = true
      }
      inputAssembly = {
        topology         = TriangleList
        primitiveRestart = false
      }
    }
  [1]
    renderState = {
      depth = {
        compareOp = LEqual
        write     = false
        test      = false
      }
      inputAssembly = {
        topology         = TriangleList
        primitiveRestart = false
      }
    }
  [2]
    renderState = {
      depth = {
        compareOp = LEqual
        write     = false
        test      = false
      }
    }
}

DepthStencilStates {
  [0]
    depthStencilState = {
      depth = {
        compareOp = LEqual
        write     = true
        test      = true
      }
    }
  [1]
    depthStencilState = {
      depth = {
        compareOp = LEqual
        write     = false
        test      = false
      }
    }
}

PipelineTemplNames {
  [0]  'graphics_2', 10000000
  [1]  'compute_2', 30000002
  [2]  'mesh_1', 20000000
  [3]  'compute_3', 30000001
  [4]  'graphics_3', 10000001
  [5]  'compute_1', 30000000
  [6]  'graphics_1', 10000000
  [7]  'mesh_2', 20000001
  [8]  'raytracing_1', 40000000
  [9]  'graphics_4', 10000002
}

GraphicsPipelineTempl {
  [0]
    layout  = 1
    shaders = {
      Vertex = 10000002
      Fragment = 10000003
    }
    topology      = Point | LineList | LineStrip | TriangleList | TriangleStrip | TriangleFan
    vertexAttribs = {
      type   = Float3
      index  = 0
      -------------
      type   = Float2
      index  = 1
    }
    patchControlPoints = 0
    earlyFragmentTests = true
    features = { 'MinimalFS' }
  ----------------------
  [1]
    layout  = 6
    shaders = {
      Vertex = 10000004
      Fragment = 10000005
    }
    topology      = Point | LineList | LineStrip | TriangleList | TriangleStrip | TriangleFan
    vertexAttribs = {
      type   = Float2
      index  = 0
      -------------
      type   = Float2
      index  = 1
    }
    patchControlPoints = 0
    earlyFragmentTests = true
    features = { 'MinimalFS' }
  ----------------------
  [2]
    layout  = 4
    shaders = {
      Vertex = 10000008
      Fragment = 10000003
    }
    topology      = Point | LineList | LineStrip | TriangleList | TriangleStrip | TriangleFan
    vertexAttribs = {
      type   = Float3
      index  = 0
      -------------
      type   = Float2
      index  = 1
    }
    patchControlPoints = 0
    earlyFragmentTests = true
    features = { 'MinimalFS' }
  ----------------------
}

MeshPipelineTempl {
  [0]
    layout  = 3
    shaders = {
      Mesh = 10000006
      Fragment = 10000007
    }
    outputTopology       = TriangleList
    maxVertices          = 3
    maxIndices           = 3
    earlyFragmentTests   = true
    meshDefaultLocalSize = { 3, 1, 1 }
    features          = { 'MinimalFS', 'MinMeshShader' }
  ----------------------
  [1]
    layout  = 3
    shaders = {
      Mesh = 1000000a
      Fragment = 1000000b
    }
    outputTopology       = TriangleList
    maxVertices          = 32
    maxIndices           = 192
    earlyFragmentTests   = true
    meshDefaultLocalSize = { 1, 1, 1 }
    meshLocalSizeSpec    = { 0, Undefined, Undefined }
    features          = { 'MinimalFS', 'MinMeshShader' }
  ----------------------
}

ComputePipelineTempl {
  [0]
    layout  = 7
    shader  = 10000000
    defaultLocalSize = { 8, 8, 1 }
    localSizeSpec = { 0, 1, Undefined }
    features = { 'MinimalFS' }
  ----------------------
  [1]
    layout  = 5
    shader  = 10000001
    defaultLocalSize = { 8, 8, 1 }
    localSizeSpec = { 0, 1, Undefined }
    features = { 'MinimalFS', 'MinRecursiveRayTracing' }
  ----------------------
  [2]
    layout  = 2
    shader  = 10000009
    defaultLocalSize = { 8, 8, 1 }
    localSizeSpec = { 0, 1, Undefined }
    features = { 'MinimalFS', 'MinDesktop' }
  ----------------------
}

RayTracingPipelineTempl {
  [0]
    layout  = 8
    features = { 'MinimalFS', 'MinRecursiveRayTracing' }
    generalShaders = {
      [0] {
        name   = 'Main'
        shader = 1000000c
      }
      [1] {
        name   = 'Miss'
        shader = 1000000d
      }
    }
    triangleGroups = {
      [0] {
        name       = 'TriHit1'
        closestHit = 1000000e
        anyHit     = none
      }
      [1] {
        name       = 'TriHit2'
        closestHit = 1000000e
        anyHit     = 1000000f
      }
    }
    proceduralGroups = {
      [0] {
        name         = 'ProcHit1'
        intersection = 10000010
        closestHit   = none
        anyHit       = none
      }
    }
  ----------------------
}

GraphicsPipelineSpec {
  [0]
    templUID      = 10000000
    rStateUID     = 0
    dsStateUID    = 0
    renderPass    = 'Simple'
    subpass       = 'Main'
    viewportCount = 1
    dynamicState  = 0
    options       = Optimize
    vertexBuffers = {
      [0] {
        name     = 'vb'
        typeName = 'vb_input1'
        rate     = Instance
        index    = 0
        stride   = 16 b
        divisor  = 1
        attribs  = {
          type   = Float3
          offset = 0 b
          index  = 0
          -------------
          type   = UShort2_Norm
          offset = 12 b
          index  = 1
          -------------
      }
    }
  [1]
    templUID      = 10000000
    rStateUID     = 1
    dsStateUID    = 1
    renderPass    = 'UIRenderPass'
    subpass       = 'Main'
    viewportCount = 1
    dynamicState  = 0
    options       = Optimize
    vertexBuffers = {
      [0] {
        name     = 'vb'
        typeName = 'vb_input1'
        rate     = Instance
        index    = 0
        stride   = 16 b
        divisor  = 1
        attribs  = {
          type   = Float3
          offset = 0 b
          index  = 0
          -------------
          type   = UShort2_Norm
          offset = 12 b
          index  = 1
          -------------
      }
    }
  [2]
    templUID      = 10000002
    rStateUID     = 1
    dsStateUID    = 1
    renderPass    = 'Simple'
    subpass       = 'Main'
    viewportCount = 1
    dynamicState  = 0
    options       = Optimize
    vertexBuffers = {
      [0] {
        name     = 'Position'
        typeName = 'VB_3_Pos'
        rate     = Vertex
        index    = 0
        stride   = 12 b
        divisor  = 0
        attribs  = {
          type   = Float3
          offset = 0 b
          index  = 0
          -------------
      }
      [1] {
        name     = 'Attribs'
        typeName = 'VB_3_Attribs'
        rate     = Vertex
        index    = 1
        stride   = 8 b
        divisor  = 0
        attribs  = {
          type   = Float2
          offset = 0 b
          index  = 1
          -------------
      }
    }
}

MeshPipelineSpec {
  [0]
    templUID      = 20000000
    rStateUID     = 2
    dsStateUID    = 1
    renderPass    = 'Simple'
    subpass       = 'Main'
    viewportCount = 1
    dynamicState  = 0
    options       = Optimize
  [1]
    templUID      = 20000001
    rStateUID     = 2
    dsStateUID    = 1
    renderPass    = 'Simple'
    subpass       = 'Main'
    viewportCount = 1
    dynamicState  = 0
    options       = Optimize
    meshLocalSize = { 3, Default, Default }
}

ComputePipelineSpec {
  [0]
    templUID     = 30000000
    dynamicState = 0
    options      = Optimize
  [1]
    templUID     = 30000001
    dynamicState = 0
    options      = Optimize
  [2]
    templUID     = 30000002
    dynamicState = 0
    options      = Optimize
}

RayTracingPipelineSpec {
  [0]
    templUID       = 40000000
    dynamicState   = 0
    options        = Optimize
    maxRecursionDepth              = 1
    maxPipelineRayPayloadSize      = 0 b
    maxPipelineRayHitAttributeSize = 0 b
}

RTShaderBindingTable {
  [0]
    ppln name:        raytracing_1.def
    ray gen:          0
    ray type count:   2
    miss shaders = {
        1, 1
    }
    hit groups = {
        2, 4294967295, 3, 4294967295, 4, 4294967295
    }
  ----------------------
}

RenderTechniques {
  [0]
    name     = 'MinForward'
    features = {
      'MinimalFS', 'part.Surface_RGBA8_sRGB_nonlinear', 'MinRecursiveRayTracing', 'MinDesktop'
    }
    passes = {
      [0] Pass {
        name       = 'Graphics1'
        renderPass = 'Simple.RenderTarget'
        subpass    = 'Main'
      }
      [1] Pass {
        name       = 'Compute1'
      }
    }
    pipelines = {
      [0]  'compute_1.def', 30000000
      [1]  'compute_2.def', 30000002
      [2]  'compute_3.def', 30000001
      [3]  'graphics_4 rp:Simple', 10000002
      [4]  'graphics_1 rp:Simple', 10000000
    }
    shader binding tables = {}
  ----------------------
  [1]
    name     = 'MeshForward'
    features = {
      'MinimalFS', 'part.Surface_RGBA8_sRGB_nonlinear', 'MinMeshShader'
    }
    passes = {
      [0] Pass {
        name       = 'Graphics1'
        renderPass = 'Simple.Present'
        subpass    = 'Main'
      }
    }
    pipelines = {
      [0]  'mesh_2 rp:Simple', 20000001
      [1]  'mesh_1 rp:Simple', 20000000
    }
    shader binding tables = {}
  ----------------------
  [2]
    name     = 'UI.RTech'
    features = {
      'MinimalFS'
    }
    passes = {
      [0] Pass {
        name       = 'Graphics0'
        renderPass = 'UIRenderPass.def'
        subpass    = 'Main'
      }
    }
    pipelines = {
      [0]  'graphics_1 rp:UI', 10000001
    }
    shader binding tables = {}
  ----------------------
  [3]
    name     = 'RayTracing'
    features = {
      'MinimalFS', 'MinRecursiveRayTracing'
    }
    passes = {
      [0] Pass {
        name       = 'Trace1'
      }
    }
    pipelines = {
      [0]  'raytracing_1.def', 40000000
    }
    shader binding tables = {
      [0]  'raytracing_1.sbt0', 0
    }
  ----------------------
}

SpirvShaders {
  [0]  offset = 0 b
  [1]  offset = 8 Kb
  [2]  offset = 10 Kb
  [3]  offset = 12 Kb
  [4]  offset = 13 Kb
  [5]  offset = 14 Kb
  [6]  offset = 16 Kb
  [7]  offset = 20 Kb
  [8]  offset = 24 Kb
  [9]  offset = 25 Kb
  [10]  offset = 27 Kb
  [11]  offset = 31 Kb
  [12]  offset = 33 Kb
  [13]  offset = 36 Kb
  [14]  offset = 38 Kb
  [15]  offset = 40 Kb
  [16]  offset = 43 Kb
}

SpirvShaderData {
  [0]
    codeSize = 5 Kb
    withTrace
  [1]
    codeSize = 2004 b
    codeHash = 7c42dff346ee7699
  [2]
    codeSize = 1784 b
    codeHash = b9d8c86147ad6f9f
  [3]
    codeSize = 1196 b
    codeHash = 15adaab0348ad250
  [4]
    codeSize = 1784 b
    codeHash = 7b3067ff83bdfe68
  [5]
    codeSize = 1332 b
    codeHash = 1496b1b57654325b
  [6]
    codeSize = 3816 b
    codeHash = a98a6b3c49ab6ae4
  [7]
    codeSize = 4 Kb
    codeHash = 7b24d32886b6d5e2
  [8]
    codeSize = 1688 b
    codeHash = 2135ee13a9d39fd6
  [9]
    codeSize = 1644 b
    codeHash = f6b0b7e5264c87f0
  [10]
    codeSize = 3880 b
    codeHash = 7ab3a43431a392d2
  [11]
    codeSize = 2276 b
    codeHash = 5865f785f3443feb
  [12]
    codeSize = 3148 b
    codeHash = 90805932b568f90
  [13]
    codeSize = 1792 b
    codeHash = 727fe51fb417f218
  [14]
    codeSize = 2280 b
    codeHash = e0b41e48c3be3442
  [15]
    codeSize = 2560 b
    codeHash = f24fcae8d46a962c
  [16]
    codeSize = 2984 b
    codeHash = d114e7101b777452
}